#ifndef OUTPUTTEXT_H
#define OUTPUTTEXT_H

#include "Output.h"

#include <QFile>
#include <QTextStream>

namespace Logger {

/**
 * @brief Zapis komunikatów do pliku tekstowego.
 **/
class OutputText : public Output
{
public:
	/**
	 * Otwarcie pliku do zapisu (jeśli plik już istnieje, nowe
	 * dane dopisywane są do niego).
	 *
	 * @param fname nazwa pliku
	 * @param filter filtr komunikatów
	 *
	 * @see Output::Output(int filter)
	 **/
	OutputText(QString fname, int filter = 0xFFFF);

	/**
	 * Zamknięcie pliku wraz z zapisaniem informacji o tym fakcie
	 **/
	~OutputText();

	/**
	 * Zapisanie komunikatu do pliku
	 *
	 * @param msg treść wiadomości
	 * @param type typ wiadomości
	 **/
	void log(const QString & msg, MsgType type);

private:
	/**
	 * Pomocnicza funkcja zamieniająca MsgType na odpowiedni napis
	 *
	 * @param type typ do zamiany
	 *
	 * @return słowna reprezentacja typu
	 **/
	QString typeStr(MsgType type);

	/// plik, do którego zapisywane będa komunikaty
	QFile file;

	/// strumień zapisu związany z plikiem
	QTextStream out;
};

} // namespace Logger

#endif // OUTPUTTEXT_H
